Introduction
This book presents the technologies and best practices that span across all of
the layers of a software development architecture. The core of this book focuses
on specific JavaScript frameworks used to implement each architectural layer.
Everything is based on MongoDB, Express, React, React Native and Node. I
will walk you through the design and development of a sample application to
teach you the best practices in architecting, coding, testing, securing, deploying
and managing a RESTful Web Service and SPA (Single Page Application).
This introduction section will define several key terms, and introduce you to
the sample application. This is important content that you will need before you
dive deeper into the materials presented in the rest of the book.
What is a development stack?
A development stack is the collection of languages and technologies used to
construct the software application. These are the technologies you would piece
together from bottom to top. This is different from what a software architecture
is. An architecture is a pattern of components and layers for building software.
This book utilizes a particularly popular set of technologies referred to as the
MERN (MongoDB, Express.JS, React and Node.js) development stack. The
architecture pattern followed is referred to as a SOA three-tier architecture.
MongoDB, Express.JS, React and Node.js are called platforms, or
frameworks, because they take code, or some form of markup/configuration and
execute it at a higher level of abstraction above the operating system level.
The MERN stack only specifies four technologies. However, in reality, there
are many more technologies that come into play. Node.js as a framework really
gets its capabilities from modular plug-ins that extend its basic capabilities.
Platforms are usually extensible, meaning they are built to be extended in
functionality by others in the community that provide modules. You will learn
about many of the important extensions that can be utilized to extend the
capabilities of Node.js, Express and React.
Note: AWS does have database services such as DynamoDB, a NoSQL
database technology. I have chosen to develop with MongoDB instead. This is
because of its rich set of capabilities and its popularity. MongoDB is still hosted
in AWS as a PaaS service, even though it is not provided directly by AWS.